package doublePointer;

import java.util.List;

public class FindLongestWord {

    /**
     * LeetCode T524 通过删除字母匹配到字典里的最长单词
     * @param args
     */
    public static void main(String[] args) {

    }

    public String findLongestWord(String s, List<String> dictionary) {
        int s_len = s.length();
        //记录结果字符串
        String ans = "";
        //记录最长字符串的长度
        int len = 0;
        //遍历字典中的所有字符串
        for (String dict : dictionary) {
            //字典中字符串的长度
            int dict_len = dict.length();
            //字符串的索引
            int i = 0;
            //字典中字符串的索引
            int j = 0;
            while (i < s_len && j < dict_len){
                if (s.charAt(i) == dict.charAt(j)){
                    i++;
                    j++;
                } else {
                    i++;
                }
            }
            if (j == dict_len && dict_len >= len){
                //如果两字符串相等，需要进行字典序排序
                if (dict_len == len){
                    if (ans.compareTo(dict) > 0){
                        ans = dict;
                    }
                } else {
                    ans = dict;
                    len = dict_len;
                }
            }

        }
        return ans;
    }
}
